package db;

/**
 * Beinhaltet alle Datenbankabfragen für
 * die Trainingspläne
 *
 * @author felix
 */
public class trainingplans {
    /**
    * Sucht die Bezeichnung für einen Trainingsplan anhand seiner ID
    * @author felix
    * @param id ID des Trainingsplans
    * @return Bezeichnung als String
    */
   public static String getName (String id) {

        String sql = "SELECT name FROM trainingplan WHERE ID=" + id;

        String nameArray[][] = db.MySQLConnection.getInstance().getGenericQuery(sql);

        return nameArray[0][0];
   }

    /**
    * Sucht das Datum eines Trainingsplans
    * @author felix
    * @param id ID des Trainingsplans
    * @return Datum als String
    */
   public static String getDate (String id) {

        String sql = "SELECT date FROM trainingplan WHERE ID=" + id;

        String dateArray[][] = db.MySQLConnection.getInstance().getGenericQuery(sql);

        return dateArray[0][0];
   }

    /**
    * Erstellt einen neuen Trainingsplan
    * @author felix
    * @param name Bezeichnung des neuen Trainingsplans
    * @param date Datum des neuen Trainingsplans
    */
   public static void createTrainingsplan (String name, String date, String typeofsport) {
            String sql = "INSERT INTO trainingplan (ID, name, date, `typeofsport.ID`) VALUES (null, ?, ?, ?)";
            String[] param = {name, date, typeofsport};
            db.MySQLConnection.getInstance().executeStatement(sql, param);
   }

    /**
    * Trainingsplan wird aktualisiert
    * @author felix
    * @param id ID des Trainingsplans
    * @param name Bezeichnung für den Trainingsplan
    * @param date Datum des Trainingsplans
    */
   public static void updateTrainingsplan (String id, String name, String date) {
            String sql = "UPDATE trainingplan SET name = ?, date = ? WHERE ID = ?";
            String[] param = {name, date, id};
            db.MySQLConnection.getInstance().executeStatement(sql, param);
   }

    /**
    * Sucht die neueste ID in der Datenbank
    * @author felix
    * @return ID als String
    */
   public static String getLatestTrainingsplanId () {
            String sql = "SELECT LAST_INSERT_ID()";

            String[][] trainingPlanId = db.MySQLConnection.getInstance().getSingleResultRow(sql);

            return trainingPlanId[0][0];
    }

    /**
    * Sucht alle Trainingspläne
    * @author felix
    * @return Stringarray mit allen Trainingsplänen
    */
    public static String[][] getAllTrainingplans (){
        String sql = "SELECT id, name, date FROM trainingplan";
        String trainingplan[][] = db.MySQLConnection.getInstance().getGenericQuery(sql);

        return trainingplan;
    }

    /**
    * Gibt Trainingspläne sortiert und gestaffelt zurück
    * @author felix
    * @param order Spalte nach der sortiert werden soll
    * @param direction Gibt an ob auf- oder absteigend sortiert wird
    * @param limit Gibt an ab welcher Zeile das Ergebnis anfängt
    * @return Stringarray mit geordnetten Trainingsplänen
    */
    public static String[][] getAllTrainingplansOrdered (String order, String direction, String limit, String typeofsport){
        String sql = "SELECT id, name, date FROM trainingplan WHERE `typeofsport.ID` = " + typeofsport;

        if(order != null && direction != null) {
            sql += " ORDER BY " + order + " " + direction;
        }

        if(limit != null) {
            sql += " LIMIT " + limit + ", 10";
        } else {
            sql += " LIMIT 0, 10";
        }

        String trainingplan[][] = db.MySQLConnection.getInstance().getGenericQuery(sql);

        return trainingplan;
    }

    /**
    * Zählt die Trainingspläne einer Sportart
    * @author felix
    * @param ID der Sportart
    * @return Gesamtzahl aller Trainingspläne als String
    */
    public static String getCountTrainingplans (String typeofsport) {
            String sql = "SELECT count(*) FROM trainingplan WHERE `typeofsport.ID`=" + typeofsport;

            String[][] trainingPlanId = db.MySQLConnection.getInstance().getSingleResultRow(sql);

            return trainingPlanId[0][0];
    }

    /**
    * Gibt die Details eines Trainingsplans zurück
    * @author felix
    * @param id ID des Trainingsplans
    * @return Stringarray mit ID, Bezeichnung und Datum des Trainingsplans
    */
    public static String[][] getTrainingplanById (String id){
        String sql = "SELECT id, name, date FROM trainingplan WHERE ID=" + id;
        String trainingplan[][] = db.MySQLConnection.getInstance().getGenericQuery(sql);

        return trainingplan;
    }
}
